package 哈希表系列;

import java.util.HashMap;
import java.util.Map;

public class TwoSum {
    //方法一：纯暴力
//    public int[] twoSum(int[] nums, int target) {
//        int n = nums.length;
//    //暴力双循环，咔咔乱杀
//        for (int i = 0; i < n; i++){
//            for(int j = i+1; j < n; j++){
//                int sum = nums[i] + nums[j];
//                if(target == sum){
//                    int[] result = new int[2];
//                    result[1] = i;
//                    result[2] = j;
//                    return result;
//                }
//            }
//        }
//        return null;
//    }
    //方法二：HashMap

    public int[] twoSum(int[] nums, int target) {
        int[] res = new int[2];
        if(nums.length < 2 || nums == null)
            return res;

        Map<Integer,Integer> map = new HashMap<>();     //key值记录当前nums的值，value值记录它的下标
        for(int i = 0; i < nums.length; i++){
            int temp = target - nums[i];    //计算有无值加起来等于target的键值对
            if(map.containsKey(temp)){      //如果有
                res[0] = i;                 //获取下标
                res[1] = map.get(temp);
                break;
            }
            map.put(nums[i],i);             //如果没有则将nums的值和下标加入到map中去
        }
        return res;
    }


}
